#include "all.h"
int Add(int a,int b)
{
    cout<<"睡眠前----------------------"<<endl;
    std::this_thread::sleep_for(std::chrono::seconds(5));
    cout<<"睡眠后----------------------"<<endl;
    return a+b;
}

//2---用智能指针管理
// int main()
// {
//     auto ptask = std::make_shared<std::packaged_task<int(int,int)>>(Add);
//     std::future<int> future1 = ptask->get_future();
//     std::thread thr([ptask]()
//     {
//         (*ptask)(1,2);
//     });
//     std::this_thread::sleep_for(std::chrono::seconds(1));
//     cout<<"get前"<<endl;
//     int ret = future1.get();
//     cout<<"ret = "<<ret<<endl;
//     thr.join();
//     return 0;
// }


//1---使用std::move
int main()
{
    std::packaged_task<int(int,int)> task1(Add);
    std::future<int> future1 = task1.get_future();
    std::thread t1(std::move(task1),1,2);
    std::this_thread::sleep_for(std::chrono::seconds(1));
    cout<<"get之前"<<endl;
    int ret = future1.get();
    cout<<"ret = "<<ret<<endl;

    t1.join();
}


